package com.wwy.arithmetic.suanfa;

import com.wwy.arithmetic.suanfa.entry.ListNode;
import sun.awt.image.ImageWatched;

import java.util.Deque;
import java.util.LinkedList;
import java.util.List;

public class ShanChuYuanSu {

    public static void main(String[] args) {

        ListNode listNode = new ListNode(5);
        ListNode listNode1 = new ListNode(3);
        ListNode listNode2 = new ListNode(4);
        ListNode listNode3 = new ListNode(4);
        ListNode listNode4 = new ListNode(6);
        ListNode listNode5 = new ListNode(4);
        listNode.next = listNode1;
        listNode1.next = listNode2;
        listNode2.next = listNode3;
        listNode3.next = listNode4;
        listNode4.next = listNode5;
        ListNode listNode6 = deleteNode(listNode, 4);
        System.out.println("listNode6 = " + listNode6.toString());
    }

    static class ListNode {
        /**
         * 数据 ：节点数据
         */
        int val;

        /**
         * 对象 ：引用下一个节点对象。在Java中没有指针的概念，Java中的引用和C语言的指针类似
         */
        ListNode next;

        public ListNode(int val) {
            //构造方法 ：构造方法和类名相同
            this.val = val;     //把接收的参数赋值给当前类的val变量
        }


        @Override
        public int hashCode() {
            return Integer.hashCode(val); // 只基于值计算hashCode
        }
    }

    static ListNode deleteNode(ListNode head, int val) {
        if (head == null) {
            return null;
        }
        head.next = deleteNode(head.next, val);
        return head.val == val ? head.next : head;
    }


    static ListNode getNum(ListNode node, int target) {
        //如果为空
        if (node == null) {
            return null;
        }
        node.next = getNum(node.next, target);
        return node.val == target ? node.next : node;
    }
}
